bf6bef2b3c5867aac2ab9202d28d3c9a65cff666,src/main/java/org/gbif/ipt/task/GenerateDCAT.java,GenerateDCAT,createDCATCatalogInformation,#,277

Before Change


        catalogBuilder.append(" a dcat:Catalog");

        //dct:title
        if (ipt != null) {
            addPredicateToBuilder(catalogBuilder, "dct:title");
            addObjectToBuilder(catalogBuilder, org.getName(), ObjectTypes.LITERAL);
        } else {
            LOG.error("IPT is null, can't get title");
        }
        //dct:description
        if (ipt != null) {
            addPredicateToBuilder(catalogBuilder, "dct:description");
            addObjectToBuilder(catalogBuilder, org.getDescription(), ObjectTypes.LITERAL);
        } else {
            LOG.error("IPT is null, can't get description");
        }
        //dct:publisher
        if (ipt != null && ipt.getKey() != null) {
            addPredicateToBuilder(catalogBuilder, "dct:publisher");
            String publisher = PUBLISHER_BASELINK + org.getKey() + "#Organization";
            addObjectToBuilder(catalogBuilder, publisher, ObjectTypes.RESOURCE);
        }
        //dcat:dataset
        if (!uris.isEmpty()) {
            addPredicateToBuilder(catalogBuilder, "dcat:dataset");
            addObjectsToBuilder(catalogBuilder, uris, ObjectTypes.RESOURCE);
        }
        //foaf:homepage
        if (cfg != null && cfg.getBaseUrl() != null) {
            addPredicateToBuilder(catalogBuilder, "foaf:homepage");
            addObjectToBuilder(catalogBuilder, cfg.getBaseUrl(), ObjectTypes.RESOURCE);
        }
        //dct:issued
        if (firstPublishedDatePresent) {
            addPredicateToBuilder(catalogBuilder, "dct:issued");
            addObjectToBuilder(catalogBuilder, parseToIsoDate(firstCreation), ObjectTypes.LITERAL);
        }
        //dct:modified
        if (lastPublishedDatePresent) {
            addPredicateToBuilder(catalogBuilder, "dct:modified");
            addObjectToBuilder(catalogBuilder, parseToIsoDate(lastModification), ObjectTypes.LITERAL);
        }
        //dcat:themeTaxonomy
        addPredicateToBuilder(catalogBuilder, "dcat:themeTaxonomy");
        String themeTaxonomy = THEME_TAXONOMY_URI;
        themeTaxonomies.add(encapsulateObject(THEME_TAXONOMY_URI, ObjectTypes.RESOURCE) + " a skos:ConceptScheme ; dct:title \"" + CATALOG_THEME_TITLE + "\"@en .");
        addObjectToBuilder(catalogBuilder, themeTaxonomy, ObjectTypes.RESOURCE);
        //dct:rights
        addPredicateToBuilder(catalogBuilder, "dct:license");
        addObjectToBuilder(catalogBuilder, CATALOG_RIGHTS, ObjectTypes.RESOURCE);
        //dct:spatial
        if (cfg.getLongitude() != null && cfg.getLatitude() != null) {
            addPredicateToBuilder(catalogBuilder, "dct:spatial");

After Change


  protected String createDCATCatalogInformation() {
    StringBuilder catalogBuilder = new StringBuilder();
    List<String> themeTaxonomies = new ArrayList<String>();
    Ipt ipt = registrationManager.getIpt();

    //Run over resources
    List<String> uris = new ArrayList<String>();
    Date firstCreation = new Date();
    boolean firstPublishedDatePresent = false;
    Date lastModification = new Date(0);
    boolean lastPublishedDatePresent = false;
    for (Resource res : resourceManager.listPublishedPublicVersions()) {
      if (res.getEml().parseLicenseUrl() != null) {
        String uri = cfg.getResourceUrl(res.getShortname()) + "#Dataset";
        uris.add(uri);
        if (res.getCreated() != null && res.getCreated().before(firstCreation)) {
          firstCreation = res.getCreated();
          firstPublishedDatePresent = true;
        }
        if (res.getLastPublished() != null && res.getLastPublished().after(lastModification)) {
          lastModification = res.getLastPublished();
          lastPublishedDatePresent = true;
        }
      }
    }

    //Base
    String url = cfg.getBaseUrl();
    url += "#Catalog";
    catalogBuilder.append(encapsulateObject(url, ObjectTypes.RESOURCE));
    catalogBuilder.append("\n");
    catalogBuilder.append(" a dcat:Catalog");

    String publisherBaselink = settings.get(PUBLISHER_BASELINK_KEY);
    if (ipt != null && publisherBaselink != null) {
      //dct:title
      addPredicateToBuilder(catalogBuilder, "dct:title");
      addObjectToBuilder(catalogBuilder, ipt.getName(), ObjectTypes.LITERAL);

      //dct:description
      if (ipt.getDescription() != null) {
        addPredicateToBuilder(catalogBuilder, "dct:description");
        addObjectToBuilder(catalogBuilder, ipt.getDescription(), ObjectTypes.LITERAL);
      } else {
        LOG.debug("IPT description is null");
      }

      //dct:publisher
      addPredicateToBuilder(catalogBuilder, "dct:publisher");
      String publisher = publisherBaselink + ipt.getOrganisationKey() + "#Organization";
      addObjectToBuilder(catalogBuilder, publisher, ObjectTypes.RESOURCE);

      //dcat:dataset
      if (!uris.isEmpty()) {
        addPredicateToBuilder(catalogBuilder, "dcat:dataset");
        addObjectsToBuilder(catalogBuilder, uris, ObjectTypes.RESOURCE);
      }

      //foaf:homepage
      if (cfg.getBaseUrl() != null) {
        addPredicateToBuilder(catalogBuilder, "foaf:homepage");
        addObjectToBuilder(catalogBuilder, cfg.getBaseUrl(), ObjectTypes.RESOURCE);
      }

      //dct:issued
      if (firstPublishedDatePresent) {
        addPredicateToBuilder(catalogBuilder, "dct:issued");
        addObjectToBuilder(catalogBuilder, parseToIsoDate(firstCreation), ObjectTypes.LITERAL);
      }

      //dct:modified
      if (lastPublishedDatePresent) {
        addPredicateToBuilder(catalogBuilder, "dct:modified");
        addObjectToBuilder(catalogBuilder, parseToIsoDate(lastModification), ObjectTypes.LITERAL);
      }

      //dcat:themeTaxonomy
      String themeTaxonomyUri = settings.get(THEME_TAXONOMY_URI_KEY);
      String catalogThemeTitle = settings.get(CATALOG_THEME_TITLE_KEY);
      if (themeTaxonomyUri != null && catalogThemeTitle != null) {
        addPredicateToBuilder(catalogBuilder, "dcat:themeTaxonomy");
        themeTaxonomies.add(
          encapsulateObject(themeTaxonomyUri, ObjectTypes.RESOURCE) + " a skos:ConceptScheme ; dct:title \""
          + catalogThemeTitle + "\"@en .");
        addObjectToBuilder(catalogBuilder, themeTaxonomyUri, ObjectTypes.RESOURCE);
      }

      //dct:rights
      String catalogRights = settings.get(CATALOG_RIGHTS_KEY);
      if (catalogRights != null) {
        addPredicateToBuilder(catalogBuilder, "dct:license");
        addObjectToBuilder(catalogBuilder, catalogRights, ObjectTypes.RESOURCE);
      }

      //dct:spatial
      if (cfg.getLongitude() != null && cfg.getLatitude() != null) {
        addPredicateToBuilder(catalogBuilder, "dct:spatial");
        String spatial =
          " a dct:Location ; locn:geometry \"" + "{ \\\"type\\\": \\\"Point\\\", \\\"coordinates\\\": [ " + cfg
            .getLongitude() + "," + cfg.getLatitude() + " ] }\" ";
        addObjectToBuilder(catalogBuilder, spatial, ObjectTypes.OBJECT);
      } else {
        LOG.debug("No spatial data defined for the IPT");
      }

      //dct:language
      String languageLink = settings.get(LANGUAGE_LINK_KEY);
      if (languageLink != null) {
        languageLink = languageLink + "en";
        addPredicateToBuilder(catalogBuilder, "dct:language");
        addObjectToBuilder(catalogBuilder, languageLink, ObjectTypes.RESOURCE);